<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\common\model\system;

use hdphp\basic\BaseModel;
use hdphp\traits\ModelTrait;
use think\Model;

/**
 * Class：系统角色模型
 * 创建人：Jack
 * 创建时间：2024/1/12 16:31
 * @package app\model\system
 */
class SystemRole extends BaseModel
{
    use ModelTrait;

    /**
     * 数据表主键
     * @var string
     */
    protected $pk = 'id';

    /**
     * 模型名称
     * @var string
     */
    protected $name = 'system_role';

    /**
     * 注释：设置创建时间
     * 创建人：Jack
     * 创建时间：2023/11/23 10:12
     * @return int
     */
    protected function setCreateTimeAttr()
    {
        return time();
    }

    /**
     * 注释：设置更新时间
     * 创建人：Jack
     * 创建时间：2023/11/23 10:12
     * @return int
     */
    protected function setUpdateTimeAttr()
    {
        return time();
    }

    /**
     * 注释：获取创建时间
     * 创建人：Jack
     * 创建时间：2024/1/12 16:03
     * @param $value
     * @return string
     */
    protected function getCreateTimeAttr($value)
    {
        return date('Y-m-d H:i:s', $value);
    }

    /**
     * 注释：获取更新时间
     * 创建人：Jack
     * 创建时间：2024/1/12 16:03
     * @param $value
     * @return string
     */
    protected function getUpdateTimeAttr($value)
    {
        return date('Y-m-d H:i:s', $value);
    }

    /**
     * 注释：规则修改器
     * 创建人：Jack
     * 创建时间：2024/1/23 17:22
     * @param Model $value
     * @return string
     */
    public static function setRulesAttr($value)
    {
        return is_array($value) ? implode(',', $value) : $value;
    }

    /**
     * 商户搜索器
     * @param Model $query
     * @param       $value
     */
    public function searchTypeAttr($query, $value)
    {
        if (is_array($value)) {
            if ($value) $query->whereIn('type', $value);
        } else {
            if ($value !== '') $query->where('type', $value);
        }
    }

    /**
     * 关联门店ID、供应商ID搜索器
     * @param Model $query
     * @param       $value
     */
    public function searchRelationIdAttr($query, $value)
    {
        if (is_array($value)) {
            if ($value) $query->whereIn('relation_id', $value);
        } else {
            if ($value !== '') $query->where('relation_id', $value);
        }
    }

    /**
     * 供应商
     * @param Model $query
     * @param       $value
     */
    public function searchSupplierIdAttr($query, $value)
    {
        if (is_array($value)) {
            if ($value) $query->whereIn('relation_id', $value)->where('type', 2);
        } else {
            if ($value !== '') $query->where('relation_id', $value)->where('type', 2);
        }
    }

    /**
     * 门店
     * @param Model $query
     * @param       $value
     */
    public function searchStoreIdAttr($query, $value)
    {
        if (is_array($value)) {
            if ($value) $query->whereIn('relation_id', $value)->where('type', 1);
        } else {
            if ($value !== '') $query->where('relation_id', $value)->where('type', 1);
        }
    }

    /**
     * 权限规格状态搜索器
     * @param Model $query
     * @param       $value
     */
    public function searchStatusAttr($query, $value)
    {
        if ($value != '') {
            $query->where('status', $value);
        }
    }

    /**
     * 权限等级搜索器
     * @param Model $query
     * @param       $value
     */
    public function searchLevelAttr($query, $value)
    {
        $query->where('level', $value);
    }

    /**
     * id搜索器
     * @param Model $query
     * @param       $value
     */
    public function searchIdAttr($query, $value)
    {
        if (is_array($value)) {
            $query->whereIn('id', $value);
        } else {
            $query->where('id', $value);
        }
    }

    /**
     * 身份管理搜索
     * @param Model $query
     * @param       $value
     */
    public function searchRoleNameAttr($query, $value)
    {
        if ($value) {
            $query->whereLike('role_name', '%' . $value . '%');
        }
    }

    /**
     * 注释：是否删除搜索器
     * 创建人：Jack
     * 创建时间：2024/1/12 9:35
     * @param Model $query
     * @return void
     */
    public function searchIsDeleteAttr($query)
    {
        $query->where('is_delete', 0);
    }
}
